一文入门【NestJs】Middleware

您所在的位置:网站首页 nestjs 权限路由 pathto 一文入门【NestJs】Middleware

一文入门【NestJs】Middleware

2024-07-17 20:09| 来源: 网络整理| 查看: 265

🚩 引言

在NestJS中,中间件(Middleware)扮演着一个关键角色,它为开发者提供了在请求到达控制器之前或响应发送之后执行自定义逻辑的能力。中间件是Node.js世界中一个广为人知的概念,NestJS通过其独特的实现,让这一概念更加优雅和易于集成。

🚩什么是 Middleware?

在NestJS的上下文中,中间件是一种可以拦截进入应用程序的请求并在其达到控制器之前执行特定任务的机制。它可以用于执行一系列操作,比如日志记录、身份验证、请求体解析、错误处理等。中间件的灵活性使得它成为增强应用功能和性能的重要工具。 在这里插入图片描述

🚩如何定义 Middleware

nest ng middleware logger

在函数中或在具有 @Injectable() 装饰器的类中实现自定义 Nest 中间件。类应实现 NestMiddleware 接口,功能无特殊要求。让我们从使用类方法实现一个简单的中间件函数开始。

import { Injectable, NestMiddleware } from '@nestjs/common'; import { Request, Response, NextFunction } from 'express'; @Injectable() export class LoggerMiddleware implements NestMiddleware { use(req: Request, res: Response, next: NextFunction) { console.log(`Request method: ${req.method}`); console.log(`Request url: ${req.url}`); console.log(`Request body: ${req.body}`); next(); } } 🚩应用Middleware

@Module 装饰器中不能使用中间件,我们必须在根模块中设置,包含中间件的模块必须实现 NestModule接口。 在这里插入图片描述

我们还可以通过在配置中间件时将包含路由 path 和请求 method 的对象传递给 forRoutes() 方法,进一步将中间件限制为特定的请求方法。在下面的示例中,请注意我们导入了 RequestMethod 枚举以引用所需的请求方法类型,也可以通过 * 号通配符来匹配所有的路由。 在这里插入图片描述

🚩排除路由

有时我们希望排除某些路由应用中间件。我们可以使用 exclude() 方法轻松排除某些路由 在这里插入图片描述

🚩全局中间件

如果我们想一次将中间件绑定到每个已注册的路由,我们可以使用 INestApplication 实例提供的 use() 方法,在main.ts 中使用即可。 在这里插入图片描述

🚩结语

掌握NestJS中的中间件机制,意味着你能够更精细地控制请求处理过程,增强应用的安全性、性能和功能性。无论是在开发阶段调试,还是在生产环境中优化,中间件都是你不可或缺的工具。随着你对NestJS的深入了解,你将发现中间件在构建健壮、高效的后端服务中的无限潜力。



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3